using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 子弹转换器接口（策略模式）
/// 定义子弹转换的抽象，支持不同的转换策略
/// </summary>
public interface IBulletConverter
{
    /// <summary>
    /// 是否可以转换指定的子弹
    /// </summary>
    bool CanConvert(Bullet bullet);

    /// <summary>
    /// 转换子弹
    /// </summary>
    /// <param name="bullet">要转换的子弹</param>
    /// <param name="converterData">转换器配置数据</param>
    /// <returns>转换后的子弹（可能是新实例或原实例）</returns>
    Bullet Convert(Bullet bullet, IBulletConverterData converterData);
}

/// <summary>
/// 子弹转换器数据接口
/// </summary>
public interface IBulletConverterData
{
    /// <summary>
    /// 目标子弹预制体（用于替换外观）
    /// </summary>
    GameObject TargetPrefab { get; }

    /// <summary>
    /// 伤害倍数
    /// </summary>
    float DamageMultiplier { get; }

    /// <summary>
    /// 额外伤害
    /// </summary>
    long BonusDamage { get; }

    /// <summary>
    /// 要添加的Buff列表
    /// </summary>
    List<BuffData> BuffsToAdd { get; }

    /// <summary>
    /// 要添加的效果列表
    /// </summary>
    List<InstantEffectData> EffectsToAdd { get; }
}

